import os
import shutil

# ====================== 1. 配置文件夹路径 ======================
source_txt_dir = r"VOCdevkit2/dataset2/labels/no"  # 存放 TXT 文件的源文件夹（需替换为实际路径）
source_jpg_dir = r"VOCdevkit2/dataset2/images/val"  # 存放 JPG 文件的源文件夹（需替换为实际路径）
dest_dir = r"VOCdevkit2/dataset2/labels/noimage"  # 剪切后 JPG 存放的目标文件夹（需替换为实际路径）

# 确保目标文件夹存在（不存在则自动创建，exist_ok=True 避免重复创建报错）
os.makedirs(dest_dir, exist_ok=True)

# ====================== 2. 遍历 TXT 文件，匹配并剪切 JPG ======================
for file_name in os.listdir(source_txt_dir):
    # 仅处理后缀为 .txt 的文件
    if file_name.endswith(".txt"):
        # 提取 TXT 文件名（去除 .txt 后缀）
        txt_basename = os.path.splitext(file_name)[0]

        # 构造对应的 JPG 文件路径
        jpg_path = os.path.join(source_jpg_dir, f"{txt_basename}.jpg")

        # 检查 JPG 文件是否存在
        if os.path.exists(jpg_path):
            # 构造 JPG 剪切后的目标路径
            dest_jpg_path = os.path.join(dest_dir, f"{txt_basename}.jpg")

            # 剪切文件（shutil.move 等价于 “剪切+粘贴”）
            shutil.move(jpg_path, dest_jpg_path)
            print(f"成功剪切：{jpg_path} → {dest_jpg_path}")

        # （可选）若需统计结果，可添加计数逻辑
# success_count = 0
# for ...:
#     if os.path.exists(jpg_path):
#         ...
#         success_count +=1
# print(f"共成功剪切 {success_count} 个文件")